#include "Formulario.h"
#include <iostream>
#include <string>
#include <exception>
#include "../modelo/util/DatosConfiguracion.h"
#include "../constantes.h"
#include "../yaml/Builder.h"
#include "BotonSingleMulti.h"
#include "SDL/SDL_image.h"
#include <map>
#include <list>
#include <dirent.h>

Formulario::Formulario(){

	this->cerrar = false;
	SDL_Init(SDL_INIT_VIDEO);
	if(TTF_Init()==-1) {
		cout << "Error al inicializar TTF, " << TTF_GetError();
	}
	this->esSinglePlayer = false;
}

void Formulario::dibujarFondo(string ruta){
	SDL_Surface *fondo;
	vista = SDL_SetVideoMode(ANCHO_FORMULARIO, ALTO_FORMULARIO, BPP_PANTALLA, SDL_DOUBLEBUF | SDL_HWSURFACE);
	string titulo = "DiabloFiuba";
	SDL_WM_SetCaption(titulo.c_str(),titulo.c_str());

	fondo = IMG_Load( ruta.c_str() );
	fondo->h = ALTO_FORMULARIO;
	fondo->w = ANCHO_FORMULARIO;

	//Dibujo la imagen de fondo
	SDL_Rect source;
	source.x = 0;
	source.y = 0;
	source.w = ANCHO_FORMULARIO;
	source.h = ALTO_FORMULARIO;

	SDL_BlitSurface( fondo, &source, vista, NULL );
}

void Formulario::mostrar(){
	SDL_Flip(this->vista);
}

int Formulario::DesplegarSolapaModoJuego(){

	// Inicializo la pantalla con la imagen de fondo correspondiente

	cout << "Entro a desplegar la solapa de modo juego" << endl;

	string SpriteFondo = "img/pantalla_diablofiuba.png";

	this->dibujarFondo(SpriteFondo);
	this->mostrar();

	bool salir = false;
	SDL_Event evento;

	//Defino los botones Single Player y Multi Player
	SDL_Rect botonSingle, botonMulti;
	botonSingle.x = BOTON_SINGLE_X;
	botonSingle.y = BOTON_SINGLE_Y;
	botonSingle.w = BOTON_SINGLE_W;
	botonSingle.h = BOTON_SINGLE_H;

	botonMulti.x = BOTON_MULTI_X;
	botonMulti.y = BOTON_MULTI_Y;
	botonMulti.w = BOTON_MULTI_W;
	botonMulti.h = BOTON_MULTI_H;

	BotonSingleMulti *botonSinglePlayer = new BotonSingleMulti(botonSingle);
	botonSinglePlayer->setFondo(this->vista);

	BotonSingleMulti *botonMultiPlayer = new BotonSingleMulti(botonMulti);
	botonMultiPlayer->setFondo(this->vista);


	while(!salir) {
		SDL_Delay(50);
		while(SDL_PollEvent(&evento)) {
			if (botonSinglePlayer->escucharEventos(&evento)){
				this->esSinglePlayer = true;
				salir = true;
			}
			if (botonMultiPlayer->escucharEventos(&evento)){
				this->esSinglePlayer = false;
				salir = true;
			}
			if( evento.type == SDL_QUIT )
			{
	    		this->cerrar = true;
				salir = true;
			}
		}
	    this->mostrar();
	}

	return 0;
}

bool Formulario::getEsSinglePlayer(){
	return this->esSinglePlayer;
}
bool Formulario::getCerrar(){
	return this->cerrar;
}

Formulario::~Formulario() {
}
